import { mapGetters, mapMutations } from 'vuex'
import {deepCopyObjArray,jsonToUrl} from '../assets/js/help.js'
export default {
  computed: {
    ...mapGetters({
      userToken: 'getUserToken',
      langObj: Object.freeze('getLangObj')
    }),
    functionBtnList: function() {
      let tab = this.$store.state.tab;
      return tab.list.length > 0 && tab.list[tab.active].functionList ? tab.list[tab.active].functionList : [];
    },
    functionList: function() {
      let list = deepCopyObjArray(this.functionBtnList);
      let _idx = list.length > 0 ? list.findByKey('functionName', 'bt_print') : -1;
      if(_idx > -1) {
        list.splice(_idx, 1);
      }
      return list;
    }
  },
  watch: {
    userToken: function(val) {
      if(val == '') {
        this.$router.push({
          path: '/login'
        })
      }
    }
  },
  methods: {
    ...mapMutations({
      loadingToggle: 'LOADING_TOGGLE',
      dialogToggle: 'DIALOG_TOGGLE',
      setDialog: 'SET_DIALOG'
    }),
    //Toast提示
    // icon: 0:普通提示 1：正确的提示 2： 错误提示
    // time: 不填默认1000ms
    showToast (info, icon, time, hiddenCallback) {
      info = info ? info : (this.langObj.system_msg_operate_fail ? this.langObj.system_msg_operate_fail : '操作失败');
      icon = icon ? icon : 0;
      this.$store.dispatch('toastToggle', { info: info, isToasting: true, time: time, icon: icon, onHidden: hiddenCallback });
    },
    // Dialog 带按钮和回调的提示框
    // info 提示的主体内容
    // btnGroup  按钮名称数组，目前只支持一个或者两个按钮，默认为： ['确认', '取消']，使用默认的按钮，那么此项可不填或者填''或[]等，只有一个按钮的时间的回调是 confirmCallback。
    // confirmCallback 点确定的回调
    // title 标题，默认为 '温馨提示'
    // cancelCallback 点击取消的回调
    showDialog(info, btnGroup, confirmCallback, title, cancelCallback) {
      btnGroup = btnGroup && btnGroup.length > 0 ? btnGroup : undefined;
      this.setDialog({
        contents: info,
        title: title,
        btnGroup: btnGroup,
        confirmCallback: confirmCallback,
        cancelCallback: cancelCallback
      })
      this.dialogToggle(true);
    },
    jumpToLogin () {
      window.localStorage.setItem('isLogout', 1);
      setTimeout(function() {
        this.$router.push({
          name: 'login'
        })
        window.localStorage.setItem('isAutoLogin', 0);
      }.bind(this),10);
    },
    toSetSession () {
      // 为了简单明了删除了对IE的支持
      // 这个调用能触发目标事件，从而达到共享数据的目的
      localStorage.setItem('getSessionStorage',Date.now());
    },
    //處理ajax请求返回的数据
    getData (response) {
      let promise = new Promise(function(resolve, reject) {
        let res = response.data;
        let success = res.success;
        let data = res.data;
        if(success) {
          if(data) {
            resolve(data);
          } else {
            resolve(success);
          }
        } else {
          reject(res);
        }
      });
      return promise;
    },
    toExport (url, params) {
      // window.open(globalUrl + url + jsonToUrl(params));
    },
    replaceMsgLength (min, max) {
      let _langObj = JSON.parse(localStorage.getItem('langObj')),
          msg = _langObj.normal_msg_input_length_tips;
      msg = msg.replace('\#', min);
      msg = msg.replace('\#', max);
      return msg;
    }
  }
}
